# -*- coding: utf-8 -*-
"""
@Project: Msptest
@Author: 余振新
@File name: 公共.py
@Create time: 2023/7/13 15:49
"""
from time import sleep

from business.首页.会议管理系统.导航菜单 import Menu
from business.首页.聚合页 import Home
from common.base_action import BaseAction
from common.gol import set_value
from common.log import INFO
from common.mysql_control import MySqlDB
from common.path import ensure_path_sep
from common.read_yaml import read_yaml
from page.首页.会议管理系统.会前.会议申请列表 import 公共, 列表页

data = read_yaml()["meeting"]
text = data["text"]
photo_path = ensure_path_sep(data["photo_path"])
pdf_path = ensure_path_sep(data["pdf_path"])


class Public(BaseAction):
    def __init__(self, driver):
        super().__init__(driver)  # 调用父类的 __init__ 方法来初始化实例变量

    def 打开_会前_会议申请(self, meetingtype: tuple):
        INFO.logger.info(f"开始会议申请流程:{meetingtype[1]}")
        Home(self.driver).进入_会议管理系统()
        Menu(self.driver).打开_会前_会议申请列表()
        self.click(列表页.会议申请按钮)
        self.click_all(meetingtype)
        self.click(列表页.保存按钮)
        sleep(0.4)

    def 基本信息_会议时间(self):
        self.find_visibility_element(公共.会议时间)
        script = '''var element = document.querySelector("#app > div > div.ivu-layout > div.main-content-con.ivu-layout-content > div > div.content-wrapper.ivu-layout-content > div:nth-child(1) > div.ivu-card.ivu-card-bordered.ivu-card-dis-hover > div.ivu-card-body > form > div:nth-child(2) > div:nth-child(2) > div > div > div > div.ivu-date-picker-rel > div > div > input");
                if (element)
                    {
                        element.removeAttribute("readonly");
                    }'''
        self.driver.execute_script(script)
        self.send_keys(公共.会议时间, "2099-11-01 00:00:00 - 2099-11-02 00:00:00")

    def 基本信息_活动时间(self):
        self.find_visibility_element(公共.活动时间)
        script = '''var element = document.querySelector("#app > div > div.ivu-layout > div.main-content-con.ivu-layout-content > div > div.content-wrapper.ivu-layout-content > div:nth-child(1) > div.ivu-card.ivu-card-bordered.ivu-card-dis-hover > div.ivu-card-body > form > div:nth-child(2) > div:nth-child(2) > div > div > div > div.ivu-date-picker-rel > div > div > input");
                if (element)
                    {
                        element.removeAttribute("readonly");
                    }'''
        self.driver.execute_script(script)
        self.send_keys(公共.活动时间, "2029-11-01 00:00:00 - 2029-11-02 00:00:00")

    def 基本信息_会议地点(self):
        self.click(公共.会议地点_省份)
        self.click(公共.会议地点_省份_上海市)
        self.click(公共.会议地点_市)
        self.click(公共.会议地点_市_市辖区)
        self.click(公共.会议地点_区)
        self.click(公共.会议地点_区_虹口区)
        self.send_keys(公共.会议地点_地址, text)

    def 基本信息_活动类型_商务用餐(self):
        self.click(公共.活动类型_商务用餐)

    def 基本信息_活动地点(self):
        self.click(公共.活动地点_省份)
        self.click(公共.会议地点_省份_上海市)
        self.click(公共.活动地点_市)
        self.click(公共.会议地点_市_市辖区)
        self.click(公共.活动地点_区)
        self.click(公共.会议地点_区_虹口区)
        self.send_keys(公共.活动地点_地址, text)

    def 基本信息_执行团队(self):
        self.click(公共.执行团队)
        self.click(公共.执行团队_健康顾问组)
        self.click(公共.执行团队_项目拓展部)
        self.click(公共.执行团队)

    def 基本信息_会议名称(self):
        self.send_keys(公共.会议名称, text)

    def 基本信息_会议目的_准入(self):
        self.click(公共.基本信息_会议目的_准入)

    def 基本信息_承办单位(self):
        self.send_keys(公共.承办单位, text)

    def 基本信息_参会人数(self):
        self.send_keys(公共.参会人数, "1")

    def 基本信息_活动类型_义诊活动(self):
        self.click(公共.活动类型)
        self.click(公共.活动类型_义诊活动)

    def 基本信息_关联终端(self):
        self.click(公共.关联终端)
        self.click(公共.选择终端_第一个)
        self.click(公共.选择终端_确定)

    def 基本信息_会议类型(self):
        self.click(公共.会议类型)
        self.click(公共.会议类型_区域性学术会议)

    def 基本信息_会议目的(self):
        self.send_keys(公共.会议目的, text)

    def 服务品牌与主题(self):
        self.click(公共.服务平台及主题_添加按钮)
        self.click(公共.服务平台及主题_第一个)
        self.sendkey_end()
        self.click_all(公共.服务平台及主题_确认按钮)

    def 服务品牌_选择_亮克(self):
        self.click(公共.服务品牌_选择)
        self.send_keys(公共.服务品牌_输入框, "亮克")
        self.click(公共.服务品牌_搜索)
        self.click(公共.服务品牌_选择_亮克)
        self.click(公共.服务品牌_确认按钮)

    def 会议目的_准入(self):
        self.click(公共.会议目的_准入_添加按钮)
        self.选择终端()
        self.服务品牌_选择_亮克()
        self.click(公共.会议目的_准入_确定按钮)

    def 会议目的_观念辅导(self):
        self.click(公共.会议目的_观念辅导_添加按钮)
        self.选择终端()
        self.参会科室()
        self.服务品牌_选择_亮克()
        self.click(公共.会议目的_观念辅导_确定按钮)

    def 会议目的_VIP维护(self):
        self.click(公共.会议目的_VIP维护_添加按钮)
        self.选择客户()
        self.服务品牌_选择_亮克()
        self.click(公共.会议目的_VIP维护_确定按钮)

    def 会议目的(self):
        self.会议目的_准入()
        self.scroll_to_element(公共.活动费用)
        self.会议目的_观念辅导()
        self.会议目的_VIP维护()

    def 科室信息_主要患者结构(self):
        self.click(公共.主要患者结构_疾病1)
        self.click(公共.主要患者结构_选择疾病_第一个疾病)
        self.click(公共.主要患者结构_选择疾病_确认按钮)
        self.send_keys(公共.主要患者结构_治疗方案1, text)
        self.click(公共.主要患者结构_疾病2)
        self.click(公共.主要患者结构_选择疾病_第一个疾病)
        self.click(公共.主要患者结构_选择疾病_确认按钮)
        self.send_keys(公共.主要患者结构_治疗方案2, text)
        self.click(公共.主要患者结构_疾病3)
        self.click(公共.主要患者结构_选择疾病_第一个疾病)
        self.click(公共.主要患者结构_选择疾病_确认按钮)
        self.send_keys(公共.主要患者结构_治疗方案3, text)

    def 科室信息(self):
        self.参会科室()
        self.科室信息_主要患者结构()

    def 品牌物料(self):
        self.click(公共.品牌物料_常笑医学网单页)

    def 会议参与形式(self):
        self.click(公共.会议参与形式_茶歇)

    def 讲师信息(self):
        self.选择讲师()
        self.click(公共.讲师信息_角色_第一个)
        self.click(公共.讲师信息_保存按钮)

    def 选择讲师(self):
        self.click(公共.讲师信息_添加按钮)
        self.click(公共.讲师信息_选择讲师)
        self.click(公共.讲师信息_选择讲师_第一个)
        self.sendkey_end()
        self.click(公共.讲师信息_选择讲师_保存)

    def 活动医生信息(self):
        self.click(公共.活动医生信息_添加按钮)
        self.click(公共.讲师信息_选择讲师)
        self.click(公共.讲师信息_选择讲师_第一个)
        self.sendkey_end()
        self.click(公共.讲师信息_选择讲师_保存)
        self.click(公共.讲师信息_保存按钮)

    def 参会科室(self):
        self.click(公共.参会科室_一级科室)
        self.click(公共.参会科室_一级科室_内科)
        self.click(公共.参会科室_二级科室)
        self.click(公共.参会科室_二级科室_血液科)

    def 选择终端(self):
        self.click(公共.选择终端)
        self.click(公共.选择终端_第一个)
        self.click(公共.选择终端_确定)

    def 选择客户(self):
        self.click(公共.选择客户)
        self.click(公共.选择客户_第一个)
        self.click(公共.选择客户_确定)

    def 下一步(self):
        self.click(公共.下一步)

    def 申请页_保存(self):
        self.click(公共.申请页面_保存)

    def 参会人页(self):
        self.click(公共.参会人_添加按钮)
        self.click(公共.参会人_第一个)
        self.click(公共.参会人_确认按钮)
        self.click(公共.参会人页_保存按钮)

    def 附件信息上传(self):
        self.click(公共.附件信息_上传按钮)
        self.upload_file(pdf_path)

    def 断言_会议下一步_是否成功(self):
        return self.is_element_exist(公共.断言_会议申请_下一步_保存成功)

    def 断言_会议申请_是否成功(self):
        return self.is_element_exist(公共.断言_会议申请_成功_保存成功)

    def 断言_会议申请_是否成功_患者活动(self):
        return self.is_element_exist(公共.断言_会议申请_成功_保存成功_感叹号)

    def 断言_附件信息_上传附件_是否成功(self):
        return self.is_element_exist(公共.断言_附件信息_上传成功)

    def 断言_会议申请从下一步到保存的操作是否成功_有参会人(self):
        self.下一步()
        if self.断言_会议下一步_是否成功():
            self.参会人页()
            if self.断言_会议申请_是否成功():
                self.保存会议编号()
                return True
            else:
                return False
        else:
            return False

    def 断言_会议申请从下一步到保存的操作是否成功_无参会人(self):
        self.申请页_保存()
        if self.断言_会议申请_是否成功():
            self.保存会议编号()
            return True
        else:
            return False

    def 断言_会议申请从下一步到保存的操作是否成功_无参会人_患者活动(self):
        self.申请页_保存()
        if self.断言_会议申请_是否成功_患者活动():
            self.保存会议编号()
            return True
        else:
            return False

    @staticmethod
    def 保存会议编号():
        meeting_no = MySqlDB().query(state="one", sql="select meeting_no from cxjk_xspt.mt_meeting where address ='UI自动化测试数据' ORDER BY meeting_no DESC")
        set_value("meeting_no", meeting_no["meeting_no"])
